package com.day6.test5_niming_inner_class;

/**
 * @author 小坡
 * @date 2022/9/8  9:12
 **/
public class Test5 {
    /*
        不使用匿名内部类：
        1．创建实现类，通过implements关键字去实现接口
        2．重写方法
        3．创建实现类对象
        4．调用重写后的方法.


        使用匿名内部类
            前提：需要存在类/接口
            格式：
                new 类名/接口名（）{
                    重写方法
                }
                匿名内部类的理解:将继承\实现，方法重写，创建对象，放在了一步进行.
                解释:实现了Inter接口的，一个实现类对象.
    * */
    public static void main(String[] args) {
        InterImpl inter = new InterImpl();
        inter.show();
        new Inter() {
            @Override
            public void show() {
                System.out.println("匿名内部类的show方法");
            }
        }.show();


//        当前接口中存在多个方法，想都进行调用怎么办
//        解决方法：可以使用父类或者父接口的引用 这样就以多态的方式接手过来 就可以引用多个方法了
        Inter2 inter2 = new Inter2() {
            @Override
            public void show1() {
                System.out.println("Inter2接口中的show1方法");
            }

            @Override
            public void show2() {
                System.out.println("Inter2接口中的show2方法");
            }
        };
        inter2.show1();
        inter2.show2();
    }
}

interface Inter {
    void show();
}

interface Inter2 {
    void show1();

    void show2();
}

class InterImpl implements Inter {
    @Override
    public void show() {
        System.out.println("InterImpl重写的show方法");
    }
}